Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Commit 95895f375644aaed87f23e22c156364514f8e05f


Parents : c1b3b4f
Author : Mark Qvist <mark@unsigned.io>
Date : 2025-01-13T11:37:29+01:00

Set firmware hashes on nRF

Changes

2 files changed, 26 insertions(+), 7 deletions(-)

M Makefile +5 -1

Diff

diff --git a/Makefile b/Makefile
index d2f74a2..70ae1f7 100644
--- a/Makefile
+++ b/Makefile
@@ -238,9 +238,13 @@ upload-featheresp32:
upload-rak4631:
arduino-cli upload -p /dev/ttyACM0 --fqbn rakwireless:nrf52:WisCoreRAK4631Board
+ @sleep 1
+ rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
upload-heltec_t114:
- arduino-cli upload -p /dev/cu.usbmodem14401 --fqbn heltec:Heltec_nRF52:HT-n5262
+ arduino-cli upload -p /dev/ttyACM0 --fqbn Heltec_nRF52:Heltec_nRF52:HT-n5262
+ @sleep 1
+ rnodeconf /dev/ttyACM0 --firmware-hash $$(./partition_hashes from_device /dev/ttyACM0)
release: release-all

diff --git a/partition_hashes b/partition_hashes
index a87c153..9d8db4b 100755
--- a/partition_hashes
+++ b/partition_hashes
@@ -20,6 +20,7 @@ import sys
import RNS
import json
import hashlib
+import subprocess
major_version = None
minor_version = None
@@ -27,9 +28,23 @@ target_version = None
target_file = os.path.join(sys.argv[1])
-firmware_data = open(target_file, "rb").read()
-calc_hash = hashlib.sha256(firmware_data[0:-32]).digest()
-part_hash = firmware_data[-32:]
-
-if calc_hash == part_hash:
- print(RNS.hexrep(part_hash, delimit=False))
+if sys.argv[1] == "from_device":
+ from_device = True
+else:
+ from_device = False
+
+if not from_device:
+ firmware_data = open(target_file, "rb").read()
+ calc_hash = hashlib.sha256(firmware_data[0:-32]).digest()
+ part_hash = firmware_data[-32:]
+
+ if calc_hash == part_hash:
+ print(RNS.hexrep(part_hash, delimit=False))
+
+else:
+ try:
+ cmdresult = subprocess.run(["rnodeconf", sys.argv[2], "-L"], stdout=subprocess.PIPE).stdout.decode('utf-8')
+ part_hash = cmdresult.split("The actual firmware hash is: ")[1].replace("\n", "")
+ print(part_hash)
+ except Exception as e:
+ print("Could not get partition hash from device: "+str(e))


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────